package com.talkyun.openx.validator.impl;

import com.talkyun.openx.validator.annotation.EmailValidator;

import java.lang.annotation.Annotation;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PhoneValidatorImpl extends AbstractValidator {

    @Override
    public String validate(Annotation ann, String argName, Object argVal) {
        return doValidate((EmailValidator) ann, argName, (String) argVal);
    }

    private String doValidate(EmailValidator sv, String name, String val) {
        if (sv.notNull() && val == null) {
            return "参数不能为空!";
        }
        if (sv.notBlank() && isBlank(val)) {
            return "参数不能为空!";
        }
        if (sv.minLen() != -1) {
            if (isBlank(val) || val.length() < sv.minLen()) {
                return "参数不足最小长度：" + sv.minLen() + "!";
            }
        }
        if (sv.maxLen() != -1) {
            if (!isBlank(val) && val.length() > sv.maxLen()) {
                return "参数超过最大长度：" + sv.maxLen() + "!";
            }
        }

        /*
          验证手机号码

          移动号码段:139、138、137、136、135、134、150、151、152、157、158、159、182、183、187、188、147
          联通号码段:130、131、132、136、185、186、145
          电信号码段:133、153、180、189
        */
        String phone_regx = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\\\\d{8}$";
        Pattern p = Pattern.compile(phone_regx);
        Matcher m = p.matcher(val);
        if (!m.matches()) {
            return "手机号码格式错误！";
        }
        return null;
    }
}